package com.neusoft.clouduserfeign.feign;

import com.neusoft.clouduserfeign.dto.Employee;
import com.neusoft.clouduserfeign.dto.EmployeeVO;
import com.neusoft.clouduserfeign.dto.Result;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;

/**
 * 员工服务Feign客户端降级实现
 */
@Component
public class EmployeeServiceClientFallback implements EmployeeServiceClient {

    @Override
    public Result<Void> createEmployee(Employee employee, String createBy) {
        return Result.error("员工服务暂时不可用，无法创建员工");
    }

    @Override
    public Result<Void> updateEmployee(String userId, Employee employee, String updateBy) {
        return Result.error("员工服务暂时不可用，无法更新员工信息");
    }

    @Override
    public Result<Void> deleteEmployee(String userId, String updateBy) {
        return Result.error("员工服务暂时不可用，无法删除员工");
    }

    @Override
    public Result<Void> updateEmployeeStatus(String userId, String status, String updateBy) {
        return Result.error("员工服务暂时不可用，无法更新员工状态");
    }

    @Override
    public Result<EmployeeVO> getEmployeeByUserId(String userId) {
        return Result.error("员工服务暂时不可用，无法获取员工信息");
    }

    @Override
    public Result<EmployeeVO> getEmployeeByEmployeeNo(String employeeNo) {
        return Result.error("员工服务暂时不可用，无法获取员工信息");
    }

    @Override
    public Result<List<EmployeeVO>> getEmployeeList(String deptName, String status, String keyword) {
        return Result.success("员工服务暂时不可用，返回空列表", new ArrayList<>());
    }

    @Override
    public Result<List<EmployeeVO>> getEmployeesByDept(String deptName) {
        return Result.success("员工服务暂时不可用，返回空列表", new ArrayList<>());
    }

    @Override
    public Result<List<EmployeeVO>> getEmployeesByManager(String managerId) {
        return Result.success("员工服务暂时不可用，返回空列表", new ArrayList<>());
    }

    @Override
    public Result<String> generateEmployeeNo() {
        return Result.error("员工服务暂时不可用，无法生成员工工号");
    }

    @Override
    public Result<Boolean> checkEmployeeNoExists(String employeeNo) {
        // 降级时返回true，避免重复工号
        return Result.success("员工服务暂时不可用，假设工号已存在", true);
    }
}
